package JET.graphics;

import JET.Centers.Graphics.GraphicMode;
import JET.geom.Vec2d;
import JET.physics.bodies.Body;
import java.awt.geom.Rectangle2D;


/**
 *
 * @author raos
 */
public interface GraphicPanel {

    public double getHelpGriddX();
    public double getHelpGriddY();
    public double getMainGriddX();
    public double getMainGriddY();

    public Rectangle2D getActionFrameSideBoxRect(Body body, int index);

    abstract public int getWidth();
    abstract public int getHeight();

    abstract public double getViewScale();
    abstract public double getTranslateX();
    abstract public double getTranslateY();

    abstract public void setViewScale(double scale);
    abstract public void resizeToFitViewScale();
    abstract public double scrToEngineX(double x);
    abstract public double scrToEngineY(double y);
    abstract public Vec2d scrToEngineVec(Vec2d vec);

    abstract public double engineToScrX(double x);
    abstract public double engineToScrY(double y);
    abstract public Vec2d engineToScrVec(Vec2d vec);

    abstract public double monitorToEngineX(double x);
    abstract public double monitorToEngineY(double y);

    abstract public void centerView();
    abstract public void centerViewToVec(Vec2d v);

    abstract public GraphicMode getGraphicMode();
    abstract public String getSceneName();
    
////////////////////////////////////////////////////////////////////////////////
//                             SWING JPANEL SUFF                              //
////////////////////////////////////////////////////////////////////////////////

//    abstract public Component getParent();
//    abstract public void setCursor(Cursor cursor);
//    abstract public Cursor getCursor();
//    abstract public void requestFocus();
//    abstract public void updateUI();
////    abstract public void paintComponent();
//    abstract public int getWidth();
//    abstract public int getHeight();
//    abstract public void addMouseListener(MouseListener l);
//    abstract public void addMouseMotionListener(MouseMotionListener l);
//    abstract public void addMouseWheelListener(MouseWheelListener l);
//    abstract public void addKeyListener(KeyListener l);
//    abstract public void setFocusable(boolean focusable);
//    abstract public Point getLocationOnScreen();
}